The present invention is related to a system and method for the variable pre-fetching of pixel data.
Common functions of display systems are the display of different types of data, including motion video and 3-dimensional objects.
The display of motion video often occurs in the context of the playback of motion video data from a disk storage device or the receipt and display of motion video transmitted from a remote source. It is a common practice to compress motion video data due to the large quantities of storage it often requires in its uncompressed state. One process used in widely accepted compression methods begins by making comparisons between frames of motion video data to detect locations within each frame that carry similar images. If such a similar image is found, then a portion of video data, comprised of a block of pixel data representing a 2-dimensional block of pixels carrying the image, may be stored or transmitted with one of the frames, and at least one other frame will carry information referring to that 2-dimensional block of pixels to be used in recreating that frame when the video data is decompressed. This method of compression is often advantageous where there are moving objects shown in the video data; hence, the term motion estimation describes the compression process and the term motion compensation describes the decompression process. Performing motion compensation involves making copies of the 2-dimensional block of pixels carried by one frame, and using those pixels to recreate a corresponding 2-dimensional block of pixels carrying a similar image for one or more other frames carrying a reference to the copy. displaying 3-dimensional objects, perspective views of 3-dimensional objects are created from a model defining the shape of the object and blocks of pixel data representing 2-dimensional blocks of pixels called texture maps that provide patterns or textures to be drawn on the surfaces of the object. Additional data describes the mapping of the pixels of a texture map to the surfaces of the object. The process of drawing textures carried by texture maps onto the surface of an object is called texture mapping.
A random access memory (RAM) of the kind commonly used in display systems tends to be organized in rows and columns of storage locations that each store one or more bits. Accesses that cross row boundaries within such a RAM device often result in greater latencies than accesses limited to columns within a row. A RAM device of the type commonly used in display systems can be accessed most efficiently by starting at the address of one of its storage locations and sequentially iterating through adjacent storage locations.
Commonly available display devices, such as cathode ray tube displays, tend to require pixel data to be transmitted to them starting with the left most pixel in the upper most row and going across the row to the right, and so on through each successive row. This has encouraged the common practice of storing the pixel data as a contiguous series of pixels organized in like manner. Though advantageous for display purposes, this adds latencies to accesses for such processes as motion compensation and texture mapping. In both processes, pixel data representing a 2-dimensional block of pixels is retrieved that has a width in pixels far less than the block of pixels stored in the RAM device. This frequently causes the retrieving of a block of pixels to be comprised of multiple smaller accesses that are more to likely cross row boundaries within a RAM device, and thereby incurring greater latencies than would retrieving the same quantity of pixels in a single contiguous access.
RAM devices used in display systems are often used to store many different pieces of data, with different components of the display system competing for access to these RAM devices to retrieve these pieces of data. With each of these pieces of data often residing at locations in different rows of a RAM device, any access made by any component of the display system to a RAM device will often incur latencies from accessing a different row from recently accessed rows. This problem is further exacerbated when a RAM device is shared between the display device and other devices within a computer, as in the case of so-called xe2x80x9cunified memory architecturexe2x80x9d computer systems where a RAM device is shared between a display system and a CPU of the computer system.
One solution has been xe2x80x9caddress groupingxe2x80x9d where the number of times that row boundaries are crossed is reduced by storing and grouping accesses for individual pixels together into groups of accesses to pixels in storage locations within the same row of a storage device. This has been done by incorporating buffers that store requests by components of a display system to retrieve pixels, grouping those requests together into larger requests. However, by design, this results in requests for pixels being delayed, thereby possibly reducing the performance of each such component of the display system. To counteract this effect of such delays, it is often necessary to add complexity to the components of a display system that make these requests by augmenting such components with storage devices to track what was to be done with each of the pixels requested when they are retrieved after such delays.
Finally, it has long been a common practice in the design of display systems to employ entirely separate logic and software for differing functions, such that hardware and/or software to counteract such latencies is often not shared between components of a display system.
A system and method for pre-fetching pixel data for at least two display functions requiring retrieval of pixels from a storage device for which the degree of effectiveness of pre-fetching differs among the display functions wherein requests to retrieve pixels from the storage device are expanded into a request to retrieve at least one 2-dimensional block of pixels the width and height of which vary depending on which one of the display functions will be performed on the pixels after they have been retrieved from the storage device.